package com.sgl.gk.controller;

import com.sgl.common.core.controller.BaseController;
import com.sgl.common.core.domain.AjaxResult;
import com.sgl.common.core.page.TableDataInfo;
import com.sgl.common.utils.ServletUtils;
import com.sgl.common.utils.StringUtils;
import com.sgl.gk.controller.vo.SaveTemplateVo;
import com.sgl.gk.controller.vo.TemplateSaveParamInfosVo;
import com.sgl.gk.controller.vo.UpdateTemplateConfigurationVo;
import com.sgl.gk.domain.GkStationConfiguration;
import com.sgl.gk.domain.GkStationConfigureTemplate;
import com.sgl.gk.service.GkStationConfigureTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author:xec
 * @date:2022/11/25 11:23
 **/
@RestController
@RequestMapping("/gk/stationConfigureTemplate")
public class GkStationConfigureTemplateController extends BaseController {

    @Autowired
    GkStationConfigureTemplateService gkStationConfigureTemplateService;

    /**
     * 查询模板
     * @param productionLineId
     * @return
     */
    @GetMapping("/list")
    @ResponseBody
    public TableDataInfo list(GkStationConfigureTemplate gkStationConfigureTemplate){
        if(ServletUtils.getParameter("pageSize")!=null&&ServletUtils.getParameter("pageNum")!=null){
            startPage();
        }
        return getDataTable(gkStationConfigureTemplateService.list(gkStationConfigureTemplate));
    }

    /**
     * 编辑名称
     * @param gkStationConfigureTemplate
     * @return
     */
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult edit(@RequestBody GkStationConfigureTemplate gkStationConfigureTemplate){
        if (StringUtils.isEmpty(gkStationConfigureTemplate.getName())||StringUtils.length(gkStationConfigureTemplate.getName())>100){
            return AjaxResult.error("模板名称不能为空或者长度不能超过100个字符");
        }
        return gkStationConfigureTemplateService.edit(gkStationConfigureTemplate);
    }

    /**
     * 保存模板
     * @param saveTemplateVo
     * @return
     */
    @PostMapping("/saveTemplate")
    @ResponseBody
    public AjaxResult saveTemplate(@RequestBody SaveTemplateVo saveTemplateVo){
        if (StringUtils.isEmpty(saveTemplateVo.getName())||StringUtils.length(saveTemplateVo.getName())>100){
            return AjaxResult.error("模板名称不能为空或者长度不能超过100个字符");
        }
        return gkStationConfigureTemplateService.saveTemplate(saveTemplateVo);
    }

    /**
     * 查询模板信息
     * @param templateId
     * @return
     */
    @GetMapping("/selectInfoByTemplateId")
    @ResponseBody
    public AjaxResult selectInfoByTemplateId(Long templateId){
        return gkStationConfigureTemplateService.selectInfoByTemplateId(templateId);
    }

    /**
     * 删除模板   可以删除多个
     * @param ids
     * @return
     */
    @DeleteMapping("/{ids}")
    public AjaxResult removeByIds(@PathVariable("ids") Long[] ids){
        return gkStationConfigureTemplateService.removeByIds(ids);
    }

    /**
     * 设置模板参数
     * @param templateId
     * @return
     */
    @GetMapping("/setParametersByTemplateId")
    @ResponseBody
    public AjaxResult setParametersByTemplateId(Long templateId){
        return gkStationConfigureTemplateService.setParametersByTemplateId(templateId);
    }

    /**
     * 保存模板变量值接口
     * @param saveTemplateVo
     * @return
     */
    @PostMapping("/editList")
    @ResponseBody
    public AjaxResult editList(@RequestBody SaveTemplateVo saveTemplateVo){
        return gkStationConfigureTemplateService.editList(saveTemplateVo);
    }

    /**
     * 修改模板显示名称
     * @param templateSaveParamInfosVo
     * @return
     */
    @PostMapping("/editConfiguration")
    public AjaxResult editConfiguration(@RequestBody TemplateSaveParamInfosVo templateSaveParamInfosVo){
        return gkStationConfigureTemplateService.editConfiguration(templateSaveParamInfosVo);
    }

    /**
     * 根据模板名称下发对应参数
     * @param gkStationConfigureTemplate
     * @return
     */
    @GetMapping("/setParametersByTemplateName")
    @ResponseBody
    public AjaxResult setParametersByTemplateName(GkStationConfigureTemplate gkStationConfigureTemplate){
        return gkStationConfigureTemplateService.setParametersByTemplateName(gkStationConfigureTemplate);
    }

    /**
     * 模板配置获取保存参数
     */
    @GetMapping("/getSaveParamByStationIdAndName")
    public AjaxResult getSaveParamByStationIdAndName(Long stationId,Long tempId){
        return gkStationConfigureTemplateService.getSaveParamByStationIdAndName(stationId,tempId);
    }

    /**
     * 修改模板保存参数是否显示
     * @param templateSaveParamInfosVo
     * @return
     */
    @PostMapping("editTempInfoToUse")
    public AjaxResult editTempInfoToUse(@RequestBody TemplateSaveParamInfosVo templateSaveParamInfosVo){
        return gkStationConfigureTemplateService.editTempInfoToUse(templateSaveParamInfosVo);
    }

    /**
     * 根据模板名称导出配置信息
     * @param tempName
     * @param response
     */
    @GetMapping("exportByTempName")
    public void exportByTempName(String tempName, HttpServletResponse response){
        gkStationConfigureTemplateService.exportByTempName(tempName,response);
    }
}
